package com.aust.reflect;

import java.lang.reflect.Field;

public class Reflect4 {
    public static void main(String[] args) throws Exception {
        Class<Student> studentClass = Student.class;
        /**
         * 获取所有 public 字段
         */
        Field[] fields1 = studentClass.getFields();
        for (Field field : fields1) {
            System.out.println(field);
        }
        System.out.println("=======================");

        /**
         * 获取所有 本类中定义的字段，不论访问权限
         */
        Field[] fields2 = studentClass.getDeclaredFields();
        for (Field field : fields2) {
            System.out.println(field);
        }
        System.out.println("=======================");

        /**
         * 获取指定名称的 public 字段（包括继承的）
         */
        Field field1 = studentClass.getField("name");
        System.out.println(field1);
        System.out.println("=======================");

        /**
         * 获取指定名称的 本类中定义的字段，不论访问权限
         * 用 getDeclaredField() 可以获取到 private 字段对象，但是如果你想访问或修改它的值，就必须调用 setAccessible(true) 来关闭权限检查。
         */
        Field field2 = studentClass.getDeclaredField("age");
        System.out.println(field2);
    }
}
